package com.mathdroid.model.talents.specs;

import java.util.HashMap;
import java.util.LinkedList;

import com.mathdroid.model.enums.ETalentTree;
import com.mathdroid.model.talents.Spec;
import com.mathdroid.model.talents.Talent;

public class Assassin extends Spec {
	private static final long serialVersionUID = 1L;
	
	private static final ETalentTree TREE_0 = ETalentTree.LETHALITY_S;
	private static final ETalentTree TREE_1 = ETalentTree.ENGINEERING_S;
	private static final ETalentTree TREE_2 = ETalentTree.MARKSMAN_S;
	
	public Assassin() {
		this.setName("Untalented Assassin");
		
		this.buildTree0();
		this.buildTree1();
		this.buildTree2();
		
	}

	private void buildTree0() {
		HashMap<String, Talent> tree0 = new HashMap<String, Talent>();
		this.put(TREE_0, tree0);
		LinkedList<String> description = null;
		String name = null;
		
		/* ---------------------------- REQ 0 Points ------------------------ */
		
		name = "Charge Mastery";
		description = new LinkedList<String>();
		description.add("Improves the effect of your saber charges while "
				+ "they're active: Lightning Charge: Increases your critical "
				+ "chance by 1%. Dark Charge: Internal and elemental "
				+ "resistance increased by 3%. Surging Charge: Yout attacks "
				+ "ignore 3% of your target's armor.");
		description.add("Improves the effect of your saber charges while "
				+ "they're active: Lightning Charge: Increases your critical "
				+ "chance by 2%. Dark Charge: Internal and elemental "
				+ "resistance increased by 6%. Surging Charge: Yout attacks "
				+ "ignore 6% of your target's armor.");
		description.add("Improves the effect of your saber charges while "
				+ "they're active: Lightning Charge: Increases your critical "
				+ "chance by 3%. Dark Charge: Internal and elemental "
				+ "resistance increased by 9%. Surging Charge: Yout attacks "
				+ "ignore 9% of your target's armor.");
		tree0.put(name, new Talent(name, 
				description, null, 0, 0, 27, 0, TREE_0, "dummy"));
		
		name = "Lightning Reflexes";
		description = new LinkedList<String>();
		description.add("Whenever you successfully parry or deflect an " +
				"attack, you recover 1% of your total force. This effect " +
				"cannot occur more than once a second. In addition " +
				"your melee and ranged defense is increased by 2%.");
		description.add("Whenever you successfully parry or deflect " +
				"an attack, you recover 2% of your total force. This " +
				"effect cannot occur more than once a second. In addition " +
				"your melee and ranged defense is increased by 4%.");
		tree0.put(name, new Talent(name, 
				description, null, 0, 0, 26, 0, TREE_0, "dummy"));
		
		name = "Thrashing Blades";
		description = new LinkedList<String>();
		description.add("Increases the damage dealt by Thrash, Lacerate " +
				"and Voltaic Slash by 3%.");
		description.add("Increases the damage dealt by Thrash, Lacerate " +
				"and Voltaic Slash by 6%.");
		tree0.put(name, new Talent(name, 
				description, null, 0, 0, 25, 0, TREE_0, "dummy"));
		
// TROOPER COMMANDO!!!
//		name = "Target Lock";
//		description = new LinkedList<String>();
//		description.add("Increases ranged and tech accuracy by 1%.");
//		description.add("Increases ranged and tech accuracy by 2%.");
//		description.add("Increases ranged and tech accuracy by 3%.");
//		tree0.put(name, new Talent(name, 
//				description, null, 0, 0, 27, 0, TREE_0, "dummy"));
//		
//		name = "Chain Reaction";
//		description = new LinkedList<String>();
//		description.add("When you get a critical with a tech attack you have a "
//				+ "10% chance to recharge one energy cell. This effect can "
//				+ "only occur once every 3 seconds.");
//		description.add("When you get a critical with a tech attack you have a "
//				+ "20% chance to recharge one energy cell. This effect can "
//				+ "only occur once every 3 seconds.");
//		tree0.put(name, new Talent(name, 
//				description, null, 0, 0, 26, 0, TREE_0, "dummy"));
//		
//		name = "Endurance";
//		description = new LinkedList<String>();
//		description.add("Increases endurance by 1%.");
//		description.add("Increases endurance by 2%.");
//		tree0.put(name, new Talent(name, 
//				description, null, 0, 0, 25, 0, TREE_0, "dummy"));
		
		/* ---------------------------- REQ 5 Points ------------------------ */
		
		name = "Electric Execution";
		description = new LinkedList<String>();
		description.add("Increases the damage dealt by your saber " +
				"charges by 3%.");
		description.add("Increases the damage dealt by your saber " +
				"charges by 6%.");
		tree0.put(name, new Talent(name, 
				description, null, 0, 5, 23, 0, TREE_0, "dummy"));
		
		name = "Swelling Shadows";
		description = new LinkedList<String>();
		description.add("Increases the chance of Dark Charge applying its " 
				+ "effects by 2%.");
		description.add("Increases the chance of Dark Charge applying its " 
				+ "effects by 4%.");
		tree0.put(name, new Talent(name, 
				description, null, 0, 5, 22, 0, TREE_0, "dummy"));
		
		name = "Lightning Recovery";
		description = new LinkedList<String>();
		description.add("Reduces the cooldown of Deflection by 15 seconds, " 
			+ "Force Speed by 2.5 seconds and Force Shroud by 7.5 seconds.");
		description.add("Reduces the cooldown of Deflection by 30 seconds, " 
			+ "Force Speed by 5 seconds and Force Shroud by 15 seconds.");
		tree0.put(name, new Talent(name, 
				description, null, 0, 5, 21, 0, TREE_0, "dummy"));
		
		name = "Shroud of Darkness";
		description = new LinkedList<String>();
		description.add("Increases your total Endurance and Willpower by 1%.");
		description.add("Increases your total Endurance and Willpower by 2%.");
		description.add("Increases your total Endurance and Willpower by 3%.");
		tree0.put(name, new Talent(name, 
				description, null, 0, 5, 20, 0, TREE_0, "dummy"));
		
		/* ---------------------------- REQ 10 Points ----------------------- */
		
		name = "Shadow Basking";
		description = new LinkedList<String>();
		description.add("Increases all healing done and recieved by 3%.");
		description.add("Increases all healing done and recieved by 6%.");
		tree0.put(name, new Talent(name, 
				description, null, 0, 10, 19, 0, TREE_0, "dummy"));
		
		name = "Dark Ward";
		description = new LinkedList<String>();
		description.add("Surrounds you in a Dark Ward with 8 charges that "
				+ "increases your shield chance by 15% for 0 seconds. "
				+ "Each time you successfully shield, Dark Ward loses 1 "
				+ "charge. Does not break stealth.");
		tree0.put(name, new Talent(name, 
				description, null, 0, 10, 18, 0, TREE_0, "dummy"));
		
		name = "Energize";
		description = new LinkedList<String>();
		description.add("Thrash and Lacerate have a 50% chance to reset the "
				+ "cooldown on Shock and make your next Shock a critical hit.");
		tree0.put(name, new Talent(name, 
				description, null, 0, 10, 17, 0, TREE_0, "dummy"));
		
		name = "Disjunction";
		description = new LinkedList<String>();
		description.add("Activating Force Speed now removes all movement "
				+ "impairing effects and Force Shroud now lasts 2 seconds "
				+ "longer. Additionally, using Cloud Mind while Dark Charge "
				+ "is active will no longer reduce threat, instead taunting "
				+ "all enemies within 15m and forcing them to attack you "
				+ "for 6 seconds.");
		tree0.put(name, new Talent(name, 
				description, null, 0, 10, 16, 0, TREE_0, "dummy"));
		
		/* ---------------------------- REQ 15 Points ----------------------- */
		
		name = "Blood of Sith";
		description = new LinkedList<String>();
		description.add("Increases the rate at which your force regenerates " +
				"by 10%");
		description.add("Increases the rate at which your force regenerates " +
				"by 20%");
		description.add("Increases the rate at which your force regenerates " +
				"by 30%");
		tree0.put(name, new Talent(name, 
				description, null, 0, 15, 14, 0, TREE_0, "dummy"));
		
		name = "Hollow";
		description = new LinkedList<String>();
		description.add("Increases your shield absorption by 2%. In addition, "
				+ "when you activate Overcharge Saber while Dark Charge is "
				+ "active, you instantly heal for 5% of your total health.");
		description.add("Increases your shield absorption by 4%. In addition, "
				+ "when you activate Overcharge Saber while Dark Charge is "
				+ "active, you instantly heal for 10% of your total health.");
		tree0.put(name, new Talent(name, 
				description, null, 0, 15, 13, 0, TREE_0, "dummy"));
		
		/* ---------------------------- REQ 20 Points ----------------------- */
		
		name = "Spike";
		description = new LinkedList<String>();
		description.add("Spikes the target upon an overloaded saber, " +
				"dealing 156 energy damage and knocking the target's armor " +
				"down for 0 seconds. Requires a double-bladed lightsaber.");
		tree0.put(name, new Talent(name, 
				description, null, 0, 20, 10, 0, TREE_0, "dummy"));
		
		name = "Nerve Wracking";
		description = new LinkedList<String>();
		description.add("Targets knocked down by your Spike take 3% more " +
				"damage from all sources.");
		description.add("Targets knocked down by your Spike take 6% more " +
		"damage from all sources.");
		description.add("Targets knocked down by your Spike take 9% more " +
		"damage from all sources.");
		tree0.put(name, new Talent(name, description, tree0.get("Spike"), 
				1, 20, 11, 0, TREE_0, "dummy"));
		
		name = "Premonition";
		description = new LinkedList<String>();
		description.add("Increases your stealth detection level by 1 and " +
				"defense by 2%.");
		description.add("Increases your stealth detection level by 1 and " +
				"defense by 4%.");
		tree0.put(name, new Talent(name, description, tree0.get("Spike"), 
				1, 20, 9, 0, TREE_0, "dummy"));
		
		/* ---------------------------- REQ 25 Points ----------------------- */
		
		name = "Mounting Darkness";
		description = new LinkedList<String>();
		description.add("Increases the damage dealt by your Dark Charge " +
				"Discharge by 5% and Wither by 10%.");
		description.add("Increases the damage dealt by your Dark Charge " +
				"Discharge by 10% and Wither by 20%.");
		description.add("Increases the damage dealt by your Dark Charge " +
				"Discharge by 15% and Wither by 30%.");
		tree0.put(name, new Talent(name, 
				description, null, 0, 25, 7, 0, TREE_0, "dummy"));
		
		name = "Eye of the Storm";
		description = new LinkedList<String>();
		description.add("Whirlwind no longer breaks on damage, but while " +
				"the effect persists, the target takes 75% less damage " +
				"from all sources.");
		tree0.put(name, new Talent(name, 
				description, null, 0, 25, 5, 0, TREE_0, "dummy"));
		
		name = "Electrify";
		description = new LinkedList<String>();
		description.add("Increases the threat and damage dealt by Shock " +
				"by 15%.");
		tree0.put(name, new Talent(name, 
				description, null, 0, 25, 4, 0, TREE_0, "dummy"));
		
		/* ---------------------------- REQ 30 Points ----------------------- */
		
		name = "Wither";
		description = new LinkedList<String>();
		description.add("Causes up to 5 targets to wither under the " +
				"weight of the force, dealing 61 kintetic damage and " +
				"decreasing the damage all targets deal by 5%. This " +
				"ability generates a high amount of threat. Lasts 0 seconds.");
		tree0.put(name, new Talent(name, description, tree0.get("Spike"), 
				1, 30, 2, 0, TREE_0, "dummy"));
	}
	
	/**
	 * Build the Deception tree.
	 */
	private void buildTree1() {
		HashMap<String, Talent> tree1 = new HashMap<String, Talent>();
		this.put(TREE_1, tree1);
		LinkedList<String> description = null;
		String name = null;
		
		name = "Dark Embrace";
		description = new LinkedList<String>();
		description.add("While in stealth mode and for 6 seconds after " +
				"leaving stealth mode, all damage dealt is increased by " +
				"5% and the rate at which you force regenerates is " +
				"increased by 25%.");
		description.add("While in stealth mode and for 6 seconds after " +
				"leaving stealth mode, all damage dealt is increased by " +
				"10% and the rate at which you force regenerates is " +
				"increased by 30%.");
		tree1.put(name, new Talent(name, 
				description, null, 0, 0, 26, 0, TREE_1, "dummy"));
		
		name = "Duplicity";
		description = new LinkedList<String>();
		description.add("Direct damage attacks have a 10% chance to grant " +
				"Exploit Weakness, causing your next Maul to ignore 50% of " +
				"your target's armor and costs 50% less force. Cannot occur " +
				"more than once every 10 seconds.");
		description.add("Direct damage attacks have a 15% chance to grant " +
				"Exploit Weakness, causing your next Maul to ignore 50% of " +
				"your target's armor and costs 50% less force. Cannot occur " +
				"more than once every 10 seconds.");
		description.add("Direct damage attacks have a 20% chance to grant " +
				"Exploit Weakness, causing your next Maul to ignore 50% of " +
				"your target's armor and costs 50% less force. Cannot occur " +
				"more than once every 10 seconds.");
		tree1.put(name, new Talent(name, 
				description, null, 0, 0, 25, 0, TREE_1, "dummy"));
		
		name = "Static Cling";
		description = new LinkedList<String>();
		description.add("Your saber charges have a 50% chance when dealing " +
				"damage to decrease the target's movement speed by 60% for " +
				"0 seconds.");
		description.add("Your saber charges have a 75% chance when dealing " +
				"damage to decrease the target's movement speed by 60% for " +
				"0 seconds.");
		tree1.put(name, new Talent(name, 
				description, null, 0, 0, 24, 0, TREE_1, "dummy"));
		
		/* ---------------------------- REQ 5 Points ------------------------ */
		
		name = "Insulation";
		description = new LinkedList<String>();
		description.add("Increases your armor rating by 15% while Surging " +
				"Charge or Lightning Charge is active.");
		description.add("Increases your armor rating by 30% while Surging" +
				" Charge or Lightning Charge is active.");
		tree1.put(name, new Talent(name, 
				description, null, 0, 5, 23, 0, TREE_1, "dummy"));
		
		name = "Recirculation";
		description = new LinkedList<String>();
		description.add("Reduces the cooldown of discharge by 1.5 seconds.");
		description.add("Reduces the cooldown of discharge by 3 seconds.");
		tree1.put(name, new Talent(name, 
				description, null, 0, 5, 21, 0, TREE_1, "dummy"));
		
		name = "Obfuscation";
		description = new LinkedList<String>();
		description.add("Increases your effective stealth level by 1 and " +
				"movement speed by 5% while stealthed.");
		description.add("Increases your effective stealth level by 2 and " +
				"movement speed by 10% while stealthed.");
		description.add("Increases your effective stealth level by 3 and " +
				"movement speed by 15% while stealthed.");
		tree1.put(name, new Talent(name, 
				description, null, 0, 5, 20, 0, TREE_1, "dummy"));
		
		
		/* ---------------------------- REQ 10 Points ----------------------- */
		
		name = "Deceptive Power";
		description = new LinkedList<String>();
		description.add("Increases your total force by 10.");
		tree1.put(name, new Talent(name, 
				description, null, 0, 10, 19, 0, TREE_1, "dummy"));
		
		name = "Darkswell";
		description = new LinkedList<String>();
		description.add("Blackout now can be used out of stealth mode, " +
				"granting 3 seconds of Dark Embrace.");
		tree1.put(name, new Talent(name, 
				description, tree1.get("Dark Embrace"), 2, 10, 18, 0, TREE_1, 
				"dummy"));
		
		name = "Surging Charge";
		description = new LinkedList<String>();
		description.add("Charges your lightsaber with rawr surging force, " +
				"giving your attacks a 25% chance to deal 32 internal " +
				"damage. This effect cannot occur more than once every " +
				"1.5 seconds. Requires double-bladed lightsaber. Does " +
				"not break stealth.");
		tree1.put(name, new Talent(name, 
				description, null, 0, 10, 17, 0, TREE_1, "dummy"));
		
		name = "Induction";
		description = new LinkedList<String>();
		description.add("Thrash and Voltaic Thrash have a 50% chance to " +
				"grant Induction, reducing the force cost of your next " +
				"Shock by 25%. Stacks up to 2 times.");
		description.add("Thrash and Voltaic Thrash have a 100% chance " +
				"to grant Induction, reducing the force cost of your " +
				"next Shock by 25%. Stacks up to 2 times.");
		tree1.put(name, new Talent(name, 
				description, null, 0, 10, 16, 0, TREE_1, "dummy"));
		
		/* ---------------------------- REQ 15 Points ----------------------- */
		
		name = "Avoidance";
		description = new LinkedList<String>();
		description.add("Lowers the cooldown of Jolty by 1 seconds " +
				"and Unbreakable Will by 15 seconds.");
		description.add("Lowers the cooldown of Jolty by 2 seconds " +
		"and Unbreakable Will by 30 seconds.");
		tree1.put(name, new Talent(name, 
				description, null, 0, 15, 15, 0, TREE_1, "dummy"));
		
		name = "Fade";
		description = new LinkedList<String>();
		description.add("Lowers the cooldown of Blackout by 7.5 seconds.");
		description.add("Lowers the cooldown of Blackout by 15 seconds.");
		tree1.put(name, new Talent(name, 
				description, null, 0, 15, 14, 0, TREE_1, "dummy"));
		
		name = "Saber Conduit";
		description = new LinkedList<String>(); //Note: 10/10/15 force
		description.add("Your Surging Charge has a 10% chance to restore " +
				"10 force when it deals damage to an enemy. This effect " +
				"cannot occur more than once every 10 seconds.");
		description.add("Your Surging Charge has a 20% chance to restore " +
				"10 force when it deals damage to an enemy. This effect " +
				"cannot occur more than once every 10 seconds.");
		description.add("Your Surging Charge has a 30% chance to restore " +
				"15 force when it deals damage to an enemy. This effect " +
				"cannot occur more than once every 10 seconds.");
		tree1.put(name, new Talent(name, description, 
				tree1.get("Surging Charge"), 1, 15, 13, 0, TREE_1, "dummy"));
		
		name = "Entropic Field";
		description = new LinkedList<String>();
		description.add("Reduces damage taken from AOE attacks by 15%.");
		description.add("Reduces damage taken from AOE attacks by 20%.");
		tree1.put(name, new Talent(name, 
				description, null, 0, 15, 12, 0, TREE_1, "dummy"));
		
		/* ---------------------------- REQ 20 Points ----------------------- */
		
		name = "Swift Blades";
		description = new LinkedList<String>();
		description.add("Increases the critical strike chance of " +
				"Shock by 10%.");
		tree1.put(name, new Talent(name, 
				description, null, 0, 20, 10, 0, TREE_1, "dummy"));
		
		name = "Static Charges";
		description = new LinkedList<String>();
		description.add("When your Surging Charge deals damage, you " +
				"have a 50% chance to build a static Charge, increasing " +
				"the damage dealt by your next Surging Discharge by 6%. " +
				"Stacks up to 5 times.");
		description.add("When your Surging Charge deals damage, you " +
				"have a 75% chance to build a static Charge, increasing " +
				"the damage dealt by your next Surging Discharge by 12%. " +
				"Stacks up to 5 times.");
		tree1.put(name, new Talent(name, description, 
				tree1.get("Saber Conduit"), 3, 20, 9, 0, TREE_1, "dummy"));
		
		name = "Resourcefulness";
		description = new LinkedList<String>();
		description.add("Lowers the cooldown of Cloud Mind by 5 seconds " +
				"and Overcharge Saber by 15 seconds.");
		description.add("Lowers the cooldown of Cloud Mind by 10 seconds " +
				"and Overcharge Saber by 20 seconds.");
		tree1.put(name, new Talent(name, 
				description, null, 0, 20, 8, 0, TREE_1, "dummy"));
		
		/* ---------------------------- REQ 25 Points ----------------------- */
		
		name = "Crackling Blasts";
		description = new LinkedList<String>();
		description.add("Increases the critical strike damage dealt by " +
				"your Discharge effects and Shock by 10%.");
		description.add("Increases the critical strike damage dealt by " +
				"your Discharge effects and Shock by 20%.");
		description.add("Increases the critical strike damage dealt by " +
				"your Discharge effects and Shock by 30%.");
		description.add("Increases the critical strike damage dealt by " +
				"your Discharge effects and Shock by 40%.");
		description.add("Increases the critical strike damage dealt by " +
				"your Discharge effects and Shock by 50%.");
		tree1.put(name, new Talent(name, 
				description, null, 0, 25, 5, 0, TREE_1, "dummy"));
		
		/* ---------------------------- REQ 30 Points ----------------------- */
		
		name = "Voltaic Slash";
		description = new LinkedList<String>();
		description.add("Strike the target twice, dealing 64 weapon " +
				"damage each hit. Each use of this ability reduces " +
				"the force cost of your next Shock by 30%. " +
				"Stacks up to 2 times.");
		tree1.put(name, new Talent(name, description, 
				tree1.get("Swift Blades"), 1, 30, 2, 0, TREE_1, "dummy"));
	}
	
	/**
	 * Build the Madness tree.
	 */
	private void buildTree2() {
		HashMap<String, Talent> tree2 = new HashMap<String, Talent>();
		this.put(TREE_2, tree2);
		LinkedList<String> description = null;
		String name = null;
		
		/* ---------------------------- REQ 0 Points ------------------------ */
		
		name = "Explosive Strikes";
		description = new LinkedList<String>();
		description.add("Critical hits with force attacks increase your " +
				"melee critical chance by 3% for 0 seconds.");
		description.add("Critical hits with force attacks increase your " +
				"melee critical chance by 6% for 0 seconds.");
		description.add("Critical hits with force attacks increase your " +
				"melee critical chance by 9% for 0 seconds.");
		tree2.put(name, new Talent(name, 
				description, null, 0, 0, 27, 0, TREE_2, "dummy"));
		
		name = "Will of the Sith";
		description = new LinkedList<String>();
		description.add("Increases total Willpower by 3%.");
		description.add("Increases total Willpower by 6%.");
		tree2.put(name, new Talent(name, 
				description, null, 0, 0, 26, 0, TREE_2, "dummy"));
		
		name = "Calcify";
		description = new LinkedList<String>();
		description.add("Increases the critical chance and damage dealt " +
				"by Force Lightning by 2%.");
		description.add("Increases the critical chance and damage dealt " +
				"by Force Lightning by 4%.");
		description.add("Increases the critical chance and damage dealt " +
				"by Force Lightning by 6%.");
		tree2.put(name, new Talent(name, 
				description, null, 0, 0, 25, 0, TREE_2, "dummy"));
		
		name = "Torment";
		description = new LinkedList<String>();
		description.add("Reduces the force cost of Thrash by 1 and Shock " +
				"and Raze by 3.");
		description.add("Reduces the force cost of Thrash by 2 and Shock " +
		"and Raze by 6.");
		tree2.put(name, new Talent(name, 
				description, null, 0, 0, 24, 0, TREE_2, "dummy"));
		
		/* ---------------------------- REQ 5 Points ------------------------ */
		
		name = "Oppressing Force";
		description = new LinkedList<String>();
		description.add("Lowers the cooldown of Overload and " +
				"Electrocute by 5 seconds. In addition, your " +
				"Whirlwind affects up to 1 additional standard or " +
				"weak enemy within 8 meters of the target.");
		description.add("Lowers the cooldown of Overload and " +
				"Electrocute by 10 seconds. In addition, your " +
				"Whirlwind affects up to 2 additional standard or " +
				"weak enemy within 8 meters of the target.");
		tree2.put(name, new Talent(name, 
				description, null, 0, 5, 23, 0, TREE_2, "dummy"));
		
		name = "Parasitism";
		description = new LinkedList<String>();
		description.add("Causes critital hits from periodic damage " +
				"abilities to restore 0.5% of your total heath and force.");
		description.add("Causes critital hits from periodic damage " +
				"abilities to restore 1% of your total heath and force.");
		tree2.put(name, new Talent(name, 
				description, null, 0, 5, 22, 0, TREE_2, "dummy"));
		
		name = "Chain Shock";
		description = new LinkedList<String>();
		description.add("When you cast Shock, you have a 15% chance " +
				"to cast a second Shock, dealing 50% of normal " +
				"damage at no additional threat.");
		description.add("When you cast Shock, you have a 30% chance " +
				"to cast a second Shock, dealing 50% of normal " +
				"damage at no additional threat.");
		description.add("When you cast Shock, you have a 45% chance " +
				"to cast a second Shock, dealing 50% of normal " +
				"damage at no additional threat.");
		tree2.put(name, new Talent(name, 
				description, null, 0, 5, 21, 0, TREE_2, "dummy"));
		
		name = "Sith Efficacy";
		description = new LinkedList<String>();
		description.add("Reduces the pushback suffered while casting " +
				"Crushing Darkness and Force Lightning by 25%. In " +
				"addition, each time your Force Lightning deals " +
				"damage, you have a 33.334% chance to recover 1% " +
				"of your total force.");
		description.add("Reduces the pushback suffered while casting " +
				"Crushing Darkness and Force Lightning by 50%. In " +
				"addition, each time your Force Lightning deals " +
				"damage, you have a 66.667% chance to recover 1% " +
				"of your total force.");
		description.add("Reduces the pushback suffered while casting " +
				"Crushing Darkness and Force Lightning by 75%. In " +
				"addition, each time your Force Lightning deals " +
				"damage, you have a 100% chance to recover 1% " +
				"of your total force.");
		tree2.put(name, new Talent(name, 
				description, null, 0, 5, 20, 0, TREE_2, "dummy"));
		
		/* ---------------------------- REQ 10 Points ----------------------- */
		
		name = "Claws of Decay";
		description = new LinkedList<String>();
		description.add("Increases the critical strike damage dealt by " +
				"Thrash and Raze by 15%.");
		description.add("Increases the critical strike damage dealt by " +
				"Thrash and Raze by 30%.");
		tree2.put(name, new Talent(name, 
				description, null, 0, 10, 18, 0, TREE_2, "dummy"));
		
		name = "Fanatacism";
		description = new LinkedList<String>();
		description.add("Reduces the force cost of Death Field by 25%. " +
				"In addition, Raze has a 50% chance to refresh the " +
				"duration of Creeping Terror when it strikes a target " +
				"at or below 50% of its maximum health.");
		description.add("Reduces the force cost of Death Field by 50%. " +
				"In addition, Raze has a 100% chance to refresh the " +
				"duration of Creeping Terror when it strikes a target " +
				"at or below 50% of its maximum health.");
		tree2.put(name, new Talent(name, description, 
				tree2.get("Claws of Decay"), 2, 10, 19, 0, TREE_2, "dummy"));
		
		name = "Death Field";
		description = new LinkedList<String>();
		description.add("Creates a Death Field at the target location, " +
				"dealing 241 internal damage and stealing 30 health " +
				"from up to 3 targets within an 8 meter radius.");
		tree2.put(name, new Talent(name, 
				description, null, 0, 10, 17, 0, TREE_2, "dummy"));
		
		name = "Madness";
		description = new LinkedList<String>();
		description.add("Force Lightning no longer has a cooldown.");
		tree2.put(name, new Talent(name, description, 
				tree2.get("Sith Efficacy"), 3, 10, 16, 0, TREE_2, "dummy"));
		
		/* ---------------------------- REQ 15 Points ----------------------- */
		
		name = "Lingering Nightmares";
		description = new LinkedList<String>();
		description.add("Increase the duration of Crushing Darkness " +
				"by 1.5 seconds.");
		description.add("Increase the duration of Crushing Darkness " +
				"by 3 seconds.");
		tree2.put(name, new Talent(name, 
				description, null, 0, 15, 15, 0, TREE_2, "dummy"));
		
		name = "Raze";
		description = new LinkedList<String>();
		description.add("Deals 276 weapon damage and makes your next " +
				"Crushing Darkness cast instantly and cost 100% less " +
				"force. Can only be used on a target affected by one " +
				"or more of your periodic effects. Requires a " +
				"double-bladed lightsaber.");
		tree2.put(name, new Talent(name, description, 
				tree2.get("Claws of Decay"), 2, 15, 14, 0, TREE_2, "dummy"));
		
		name = "Wrath";
		description = new LinkedList<String>();
		description.add("When your Force Lightning deals damage, " +
				"you have a 15% chance to cause your next damaging " +
				"force attack with a cast time to cast instantly " +
				"and deal 20% more damage.");
		description.add("When your Force Lightning deals damage, " +
				"you have a 30% chance to cause your next damaging " +
				"force attack with a cast time to cast instantly " +
				"and deal 20% more damage.");
		tree2.put(name, new Talent(name, description, 
				tree2.get("Madness"), 1, 15, 12, 0, TREE_2, "dummy"));
		
		/* ---------------------------- REQ 20 Points ----------------------- */
		
		name = "Haunted Dreams";
		description = new LinkedList<String>();
		description.add("Lowers the cast time of Whirlwind by 50%. " +
				"In addition, when your Whirlwind breaks early from " +
				"damage, the target is stunned for 1 second.");
		description.add("Lowers the cast time of Whirlwind by 100%. " +
				"In addition, when your Whirlwind breaks early from " +
				"damage, the target is stunned for 2 second.");
		tree2.put(name, new Talent(name, 
				description, null, 0, 20, 11, 0, TREE_2, "dummy"));
		
		name = "Unearthed Knowledge";
		description = new LinkedList<String>();
		description.add("Shock has a 33.34% chance to increase your melee " +
				"bonus damage by 15% for 15 seconds.");
		description.add("Shock has a 66.67% chance to increase your melee " +
				"bonus damage by 15% for 15 seconds.");
		description.add("Shock has a 100% chance to increase your melee " +
				"bonus damage by 15% for 15 seconds.");
		tree2.put(name, new Talent(name, 
				description, null, 0, 20, 10, 0, TREE_2, "dummy"));
		
		name = "Deathmark";
		description = new LinkedList<String>();
		description.add("Death Field places a Deathmark on " +
				"affected targets, increasing the amount of " +
				"damage the targets suffer from your next 8 " +
				"periodic damaging abilities by 20%. Last 30 seconds.");
		tree2.put(name, new Talent(name, description, 
				tree2.get("Death Field"), 1, 20, 9, 0, TREE_2, "dummy"));
		
		name = "Calculating Mind";
		description = new LinkedList<String>();
		description.add("Consuming a Deathmark charge restores 1 force.");
		description.add("Consuming a Deathmark charge restores 2 force.");
		tree2.put(name, new Talent(name, description, 
				tree2.get("Deathmark"), 1, 20, 8, 0, TREE_2, "dummy"));
		
		/* ---------------------------- REQ 25 Points ----------------------- */
		
		name = "Devour";
		description = new LinkedList<String>();
		description.add("Increases the amount of healing generated " +
				"by Death Field and Parasitism by 10%.");
		description.add("Increases the amount of healing generated " +
				"by Death Field and Parasitism by 10%.");
		description.add("Increases the amount of healing generated " +
				"by Death Field and Parasitism by 20%.");
		tree2.put(name, new Talent(name, 
				description, null, 0, 25, 6, 0, TREE_2, "dummy"));
		
		name = "Creeping Death";
		description = new LinkedList<String>();
		description.add("Increases the critical damage bonus of Death " +
				"Field and your periodic damage abilities by 10%.");
		description.add("Increases the critical damage bonus of Death " +
				"Field and your periodic damage abilities by 20%.");
		description.add("Increases the critical damage bonus of Death " +
				"Field and your periodic damage abilities by 30%.");
		tree2.put(name, new Talent(name, 
				description, null, 0, 25, 5, 0, TREE_2, "dummy"));
		
		/* ---------------------------- REQ 30 Points ----------------------- */
		
		name = "Creeping Terror";
		description = new LinkedList<String>();
		description.add("Paralyzes the target in fear, immobilizing " +
				"it for 0 seconds and dealing 357 internal damage over " +
				"0 seconds. Creeping Terror cannot be removed until it " +
				"runs its natural course.");
		tree2.put(name, new Talent(name, 
				description, null, 0, 30, 1, 0, TREE_2, "dummy"));
	}
}
